package com.itlong.cloud.operate.dao;

import com.itlong.cloud.POJO.PO.MiniProgramFunctionInfoPO;
import com.itlong.cloud.POJO.VO.app.AppFunctionInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      运营-套餐管理-小程序功能管理数据访问层
 * </desc>
 *
 * @createDate2020/3/23
 **/
@Mapper
@Repository
public interface IOperateMiniProgramFunctionDao {

    /**
     * <desc>
     *      获取小程序功能列表
     * </desc>
     *
     * @param params 查询参数列表
     * @return
     * @Author Zhu.yj
     * @createDate  2020/3/23
     */
    List<MiniProgramFunctionInfoPO> getPage(Map<String, Object> params);

    /**
     * <desc>
     *      获取小程序功能列表数量
     * </desc>
     *
     * @param params 查询参数
     * @return
     * @Author Zhu.yj
     * @createDate  2020/3/23
     */
    Integer getPageCount(Map<String, Object> params);

    /**
     * <desc>
     *      更改小程序功能菜单信息
     * </desc>
     *
     * @param params 更新参数
     * @return
     * @Author Zhu.yj
     * @createDate  2020/3/23
     */
    Integer update(Map<String, Object> params);

    /**
     * <desc>
     *      批量删除小程序功能id
     * </desc>
     *
     * @param miniFunctionIds 小程序功能id数组
     * @return
     * @Author Zhu.yj
     * @createDate  2020/3/23
     */
    Integer deleteFunction(@Param("miniFunctionIds") String[] miniFunctionIds);

    /**
     * <desc>
     *      启用或禁用小程序功能
     * </desc>
     *
     * @param params 更改参数
     * @return
     * @Author Zhu.yj
     * @createDate  2020/3/23
     */
    Integer updateStatus(Map<String,Object> params);

    /**
     * <desc>
     *      根据父节点获取子节点列表
     * </desc>
     *
     * @param miniFunctionId 小程序功能id
     * @return
     * @Author Zhu.yj
     * @createDate  2020/3/23
     */
    List<AppFunctionInfoVO> getChildByParent(@Param("miniFunctionId") String miniFunctionId,@Param("type") Integer type);


    /**
     * <desc>
     *      获取套餐中小程序的功能菜单
     * </desc>
     *
     * @param
     * @return
     * @Author Zhu.yj
     * @createDate  2020/3/24
     */
    List<String> getMiniPackageFunction(String appPackageId);

    /**
     * <desc>
     *      保存操作
     * </desc>
     *
     * @param params 参数
     * @return
     * @Author Zhu.yj
     * @createDate  2020/3/24
     */
    Integer save(Map<String, Object> params);

    /**
     * <desc>
     *      获取小程序功能配置
     * </desc>
     *
     * @param projectId 项目id
     * @return
     * @Author Zhu.yj
     * @createDate  2020/3/26
     */
    List<MiniProgramFunctionInfoPO> getMiniConfig(@Param("projectId") String projectId);

    /**
     * <desc>
     *      获取小程序所有功能菜单列表
     * </desc>
     *
     * @param
     * @return
     * @Author Zhu.yj
     * @createDate  2020/3/26
     */
    List<MiniProgramFunctionInfoPO> getMiniFunctionList();

    /**
     * <desc>
     *      获取单个小程序功能信息
     * </desc>
     *
     * @param miniFunctionId 小程序功能id
     * @return
     * @Author Zhu.yj
     * @createDate  2020/4/1
     */
    MiniProgramFunctionInfoPO getOne(String miniFunctionId);

    /**
     * <desc>
     *      判断项目是否绑定了套餐
     * </desc>
     *
     * @param projectId 项目id
     * @return
     * @Author Zhu.yj
     * @createDate  2020/4/22
     */
    Integer getPackageCount(String projectId);


}
